package com.azzcs.v2.offer11;

/**
 * 把一个数组最开始的若干个元素搬到数组的末尾，我们称之为数组的旋转。输入一个递增排序的数组的一个旋转，
 * 输出旋转数组的最小元素。例如，数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转，该数组的最小值为1。
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 *
 * @Author: azzcs
 * @Date: 2021/10/8 上午11:05
 */
public class Solution {

    public int minArray(int[] numbers) {
        int i = 0, j = numbers.length - 1;
        int m;
        while (i < j) {
            if(numbers[i] == numbers[j]){
                i++;
                continue;
            }
            if(numbers[i] < numbers[j]){
                return numbers[i];
            }
            m = (i+j)/2;
            if(numbers[i] > numbers[m]){
                i = i+1;
                j = m;
            }
            if(numbers[i] <= numbers[m] && numbers[i] > numbers[j]){
                i = m+1;
            }
        }
        return numbers[i];
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.minArray(new int[]{ 2,2,2,0, 1}));
    }
}
